package Year22_Month06.day08;

import java.util.LinkedList;
import java.util.Queue;

public class 对称二叉树_迭代 {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return false;//如果为空直接返回false
        Queue<TreeNode> q1 = new LinkedList<>();
        Queue<TreeNode> q2 = new LinkedList<>();
        q1.offer(root.left);
        q2.offer(root.right);
        while(!q1.isEmpty() && !q2.isEmpty()){
            TreeNode lefe = q1.poll();
            TreeNode right = q2.poll();
            if(lefe == null && right == null) continue;//如果两个都为空就直接进入下次循环
            if(lefe == null || right == null) return false;//如果有一个为空另外一个不为空就返回flase
            if(lefe.val != right.val) return false;//不相等直接返回好吧
            //这里保证了左右子树都不为空，所以开始把左右子树按照一定的顺序入队列
            q1.offer(lefe.left);
            q1.offer(lefe.right);
            q2.offer(right.right);
            q2.offer(right.left);
        }
        return q1.isEmpty() && q2.isEmpty();
    }
}
